package com.xuecheng.swagger.controller;

import com.xuecheng.swagger.entity.Student;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
//@Api注解作用于类上，参数有两个
// tags： 标题
//description  描述
@Api(tags = "hello api 服务测试aaa",description = "对api服务接口测试bbb")
public interface HelloControllerMapper {
    @ApiOperation("测试hello的方法") //对方法的描述
    @GetMapping("hello")
    String hello();

    @ApiOperation("queryString的方法")  //对方法的描述
    //name:接收参数名
    //value:接收参数的意义描述
    //required = true  参数是否必填
    //dataType = "String" 参数的数据类型 只作为标志说明，并没有实际验证
    //paramType = "query" 查询参数类型
    @ApiImplicitParam(name = "num",value = "学生的编号",required = true,dataType = "String",paramType = "query")
    @GetMapping
    Student modifyStudentNum(@RequestParam("num") String num);


    @ApiOperation("测试path(Restful)的方法")   //对方法的描述
    @GetMapping("{name}")

    @ApiImplicitParam(name = "name",value = "学员的名字",required = true,dataType = "String",paramType = "path")
    Student modifyStudentName(@PathVariable("name") String name);
    //name:接收参数名
    //value:接收参数的意义描述
    //required = true  参数是否必填
    //dataType = "String" 参数的数据类型 只作为标志说明，并没有实际验证
    //paramType = "query" 查询参数类型
    @ApiOperation("测试requestBody的方法")   //对方法的描述
    @PostMapping
    Student modifyStudent(@RequestBody Student student);


    @ApiOperation("测试综合requestBody的方法")   //对方法的描述
    //name:接收参数名
    //value:接收参数的意义描述
    //required = true  参数是否必填
    //dataType = "String" 参数的数据类型 只作为标志说明，并没有实际验证
    //paramType = "query" 查询参数类型
    @ApiImplicitParams({  // 对方法多个参数的描述
            @ApiImplicitParam(name = "id",value = "学员的编号",required = true,dataType = "String",paramType = "path"),
            @ApiImplicitParam(name = "name",value = "学员的姓名",required = true,dataType = "String",paramType = "query")

    })
    @PutMapping("{id}")
    Student mofidyStudentBynNum(@PathVariable("id") String id
            , @RequestParam("name") String name,
                                @RequestBody Student student);
}
